package cn.cjxy.day11springbootdemo2.controller;

import cn.cjxy.day11springbootdemo2.domain.Address;
import cn.cjxy.day11springbootdemo2.domain.User;
import cn.cjxy.day11springbootdemo2.utils.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

/**
 * 企业开发中，前端发起了请求那么后端接口就会提供响应，并且通常我们会响应JSON格式数据给到前端
 * 后端想要响应JSON数据那么就必须在接口上加上一个注解@ResponseBody，表示要将响应数据转换为JSON格式数据响应给前端。这也是前面说的前后端交互使用JSON格式
 * @author huangjie
 * @date 2025/10/10
 */
    //@Controller
    //@ResponseBody

/**
 * 这是一个复合注解，其底层包含了如下两个注解**
 *
 * - **@Controller：标识当前类是一个控制器类，后续详细讲解**
 * - **@ResponseBody：加在类上代表整个控制器类的接口方法都响应JSON格式数据返回给前端**
 */
@RequestMapping("/user")
@RestController
public class ResponseController {

        //接口响应单个json对象
    @GetMapping("/{id}")
    public R<User> getById(@PathVariable("id") String id) {
        System.out.println("查询单个用户成功---");
        User user = new User("张三", 23);
        //响应成功  带数据
        return R.ok(user);
    }

    /**
     * 接口响应集合json对象
     * @return
     */
    @GetMapping
    public R<List<User>> findAll(){

        System.out.println("查询所有用户成功----");
        List<User> list = Arrays.asList(

                new User("张三", 23),
                new User("李四", 24, new Address("四川", "成都"))
        );

        return R.ok(list);

    }



}
